@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u@O8PWF52- - 850 referentie kaart door Patrick Holthuizen- Deze tekst moet wordT}en gebruikt met een direct connect modem- op poort 1. Deze tekst is echter ook bruikbaar om snel de- poU}ort referenties op te zoeken voor andere toepassingen.- EDefault instellingenF- 1.- V} 300 baud- 8 bits per woord- 1 stop bit per woord- Geen input parity- Output pariW}ty is 0- DSR, CTS, CRX worden niet getest (DSR= data set ready, CTS=- clear to send, CRX= carrier detecX}t)- 2.- Geen Linefeed (=LF) na carriage return (=CR)- Lichte vertaling (light translation)Y}- 3.- Uitgaande lijnen DTR, RTS zijn laag (DTR= data terminal- ready, RTS= request to send)Z}- De onderdelen van groep 1 kunnen met XIO- 36,#chn,aux1,aux2,"Rn:" ingesteld te worden. Onderdelen[} van 2- met XIO 38,.. en van 3 met XIO 34,..- EHet controleren van de uitgaande lijnen DTR, RTS\} en XMTF- DTR = data terminal ready- RTS = request to send- XMT = data transmit (alleen geb]}ruikt voor break signaal)- Het commando is: EXIO 34,#chn,aux1,aux2,"Rn:"F- aux1 tel op- (D^}TR)- 0 geen verandering aan huidige DTR instelling- 128 zet DTR uit- 192 zet DTR aan- _} (RTS)- 0 geen verandering aan huidige RTS instelling- 32 zet RTS uit- 48 zet RTS `}aan- (XMT)- 0 geen verandering aan huidige XMT instelling- 2 zet XMT op space (0)- a} 3 zet XMT op mark (1)- aux2 is altijd 0- Het XMT signaal wordt gebruikt om een break signaal tb}e- zenden. Dit gebeurt door XMT op space te zetten en dan na een- (hele) korte tijd weer op mark te zetc}ten. Het RTS signaal- wordt zelden gebruikt. Het DTR signaal wordt gebruikt om- bijvoorbeeld op te hangd}en tijdens transmissie. Dit gebeurt- door DTR uit te zetten en dan daarna weer aan om weer normaal- cone}tact met de modem te hebben.- EHet instellen van de baud rate, woord grootte, aantal- f} stop bits, testen van de DSR, CTS en CRX lijnen.F- DSR = data set (modem) ready- CTS = clear tg}o send- CRX = carrier detect- Het commando is: EXIO 36,#chn,aux1,aux2,"Rn:"F- aux1 tel oph}- (baud rate)- 0 300 bps *- 1 45.5 bps- 2 50 bps- 3 56i}.875 bps- 4 75 bps- 5 110 bps- 6 134.5 bps- 7 150 bps- j} 8 300 bps *- 9 600 bps- 10 1200 bps *- 11 1800 bps- 12 2400 k} bps *- 13 4800 bps *- 14 9600 bps *- 15 9600 bps *- *= interessantl}e modem snelheden- (woord grootte)- 0 8 bits- 16 7 bits (5, 6 en 7 bits kunnen niet gebrum}ikt worden- 32 6 bits boven 300 baud. Ook niet in concurrent I/O als- 48 5 bits output in half dupln}ex en ook niet in full duplex)- (aantal stop bits per woord)- 0 1 stop bit- 128 2 stop bito}s- aux2 tel op- (testen van DSR, CTS, CRX)- 0 geen enkele lijn kan getest worden- p} 1 CRX- 2 CTS- 3 CTS CRX- 4 DSR- 5 DSR CRX- q} 6 DSR CTS- 7 DSR CTS CRX- De CTS lijn wordt zelden gebruikt bij modem communicatie.r}- EVertaling en parityF- Het commando is: EXIO 38,#chn,aux1,aux2,"Rn:"F-s} aux1 tel op- (vertaling)- 0 lichte ATASCII/ASCII vertaling- 16 zware ATASCII/At}SCII vertaling- 32 geen vertaling- (input parity)- 0 ontken parity en laat parity onveranu}derd- 4 test voor oneven (odd) parity en maak parity 0- 8 test voor even (even) parity en maak pariv}ty 0- 12 ontken parity en maak parity 0- (output parity)- 0 laat parity onveranderd- w} 1 zet parity op oneven (odd)- 2 zet parity op even (even)- 3 zet parity op 1- (x}linefeed)- 0 voeg geen linefeed toe- 64 voeg linefeed toe na CR (bij vertaling van EOL naar CR)- y} aux2- (niet-vertaal-karakter)- XXX a(ta)scii code van het niet-vertaal-karakter- Hetz} niet-vertaal-karakter wordt gebruikt bij zware vertaling.- Dit is het karakter waarin alle data wordt vertaald di{}e- tussen de waarde 0-32 inligt of groter is dan 124.- Lichte vertaling: De enige vertaling is die van |}EOL -> CR- (155 -> 13)- Zware vertaling: EOL -> CR- 0-32-> niet-vertaal-kar}}akter- >124-> niet-vertaal-karakter- EConcurrent I/O modeF- In dez~}e mode vindt de werkelijke communicatie plaats tussen- modem en computer. In deze paragraaf wordt uitgelegd in wel}ke- volgorde alle commando's gepleegd moeten worden.- - Eerst moeten alle instellingen gedaa}n worden met behulp van- XIO 34,36,38. Een voorbeeldinstelling is:- --DTR aan- -RTS uit- } -XMT mark- --300 baud- -woordgrootte 8 bits- -1 stopbit- -DSR, CTS, CRX n}iet testbaar- --lichte ATASCII/ASCII vertaling- -ontken input parity en laat input parity onveranderd}- -laat output parity onveranderd- -voeg LF toe na CR- Dit wordt in ATARI BASIC als volgt bew}erkstelligd:- -XIO 34,#1,192+32+3,0,"R:" dit komt overeen met- XIO 34,#1,227,0,"R:"- -XIO 36},#1,0+0+0,0,"R:" dit komt overeen met- XIO 36,#1,0 ,0,"R:"- -XIO 38,#1,0+0+0+64,0,"R:" dit komt ove}reen met- XIO 38,#1,64 ,0,"R:"- Na het instellen van de 850 moet worden overgeschakeld naar- } concurrent I/O mode om contact met de modem te krijgen. Dit- gebeurt als volgt in ATARI BASIC:- } EOPEN #1,13,0,"R:"- XIO 40,#1,0,0,"R:"- ...F- Om weer uit de concurrent I/O mode t}e treden moet je het- gebruikte kanaal gewoon sluiten. In ATARI BASIC:- ECLOSE #1F- Let op} dat als je de concurrent I/O verlaat, dat het I/O- buffer gewist wordt. Als je in de concurrent I/O mode zit kun}- je geen instellingen op de 850 veranderen, om die- instellingen te veranderen moet je eerst uit de con}current- I/O mode treden. Als je in de concurrent I/O mode zit en je- wilt even iets aan de instelling }veranderen (bijvoorbeeld de- baud rate aanpassen) en daarna weer doorgaan met de- communicatie, dan gaa}t dat als volgt in ATARI BASIC:- - CLOSE #1- - OPEN #1,13,0,"R:"- XIO 40,#1,0,0,"R:"- - NB. Bij het ing}aan van concurrent I/O moeten de testbare- lijnen, die zijn ingesteld met XIO 36,.., aan staan, anders- } treedt een error op.- ECommunicatie in concurrent I/O modeF- Als je wilt communiceren met de }modem of degene waarmee de- modem in verbinding staat, dan kun je gebruik maken van de- gewone PUT, GET}, PRINT en INPUT operaties van ATARI BASIC.- EPUTF : PUT #1,A stopt de ASCII waarde van A in het output- } buffer (na eventuele vertaling en toevoeging van LF). Het- buffer wordt door de 850 op de snelheid van de baud} rate- geleegd, als het buffer vol raakt, dan wacht het PUT comando- tot er plaats is in het buffer en }stopt de ASCII waarde van A- dan in het buffer.- EGETF : GET #1,A haalt een ASCII waarde uit het inpu}t buffer en- stopt dat (na eventuele vertaling van CR naar EOL en waarden- tussen 0-32 en >124 naar een} niet-vertaal-karakter) in A. Als- er geen waarde in het buffer beschikbaar is, dan wacht het- GET comm}ando tot er een teken in het buffer zit en voert dan- het commando uit.- EPRINTF : PRINT #1;A($) werk}t hetzelfde als PUT maar is- regel-georienteerd, je kunt dus een hele regel wegsturen.- EINPUTF : INP}UT #1,A($) werkt hetzelfde als GET maar is- regelgeorienteerd. Let op dat de input eindigt met een EOL- } want die heeft het INPUT commando nodig om te eindigen.- NB1. Om te voorkomen dat je een GET of INPUT doet met ee}n- leeg buffer, zodat de computer eeuwig blijft wachten tot er- input is, moet eerst gecontroleerd word}en of het buffer leeg- is. Is het buffer namelijk leeg, dan mag de GET of INPUT niet- uitgevoerd worden}. Hoe je dit doet staat in volgende- paragraaf over STATUS.- NB2. Let op dat als de karakters niet snel} genoeg uit het- input buffer gehaald worden en het buffer raakt vol, dan- wordt het buffer gewist en w}ordt weer gevuld vanaf het begin,- hierdoor kun je dus karakters kwijtraken. Zorg dus dat je de- karakt}ers snel genoeg uit het buffer haalt, maak desnoods- gebruik van machinetaal routines (vooral als je op hogere-} baud rates werkt).- NB3. Binnen concurrent I/O kan geen gebruik worden gemaakt- v}an andere apparaten die op de seriele poort zijn aangesloten- (zoals printer, diskdrive ed.). Als je dus tijdens d}e- communicatie met de 850 in concurrent I/O iets wilt- uitprinten, moet je eerst uit de concurrent I/O}. Dan pas kun- je printen.- EStatus van de 850F- De status van de 850 kan in ATARI }BASIC getest worden met het- STATUS commando. Let echter op dat het STATUS commando andere- resultaten }levert als je in de concurrent I/O mode zit of- niet in de concurrent I/O mode zit. Het commando wordt als- } volgt gegeven: STATUS #1,var- EZowel in concurrent I/O mode als daarbuiten:F- STATUS #1,A zorgt }ervoor dat een status over de 850 gepleegd- wordt. In de variabele A wordt de operatie/error code van het- } STATUS commando zelf gezet.- A= 1 ->succesvolle STATUS- A<>1 ->niet succesvolle STATUS- }Als A<>1 dan ligt de fout bij de communicatie tussen computer- en interface. Waarschijnlijk een programmeerfout (o}f erger).- EBuiten concurrent I/O mode:F- De uitvoering van STATUS #1,A zorgt er voor dat in de- } adressen 746-749 bepaalde status waarden van de 850 komen te- staan.- Locatie 746:- b}it 0 Error on command to interface module- bit 1 Error on block data transfer out- bit 2 External devic}e not fully ready- bit 3 Illegal option combination attempted- bit 4 Recieved data buffer overflow erro}r- bit 5 Received data parity error- bit 6 Received data byte overrun error- bit 7 Received }data framing error- Locatie 747: Bevat informatie over de huidige status van de- lijnen DSR, CTS, CRX e}n RCV (RCV= data recieve).- Opgeteld bij locatie 747- Nu: tussen vorige STATUS en nu:- } (DSR)- 192 aan altijd aan- -128- -aan- niet altijd aan- 64 uit niet} altijd uit- 0 uit altijd uit- (CTS)- 48 aan altijd aan- -32}- -aan- niet altijd aan- 16 uit niet altijd uit- 0 uit altijd uit- (}CRX)- 12 aan altijd aan- -8- -aan- niet altijd aan- 4 uit niet al}tijd uit- 0 uit altijd uit- (RCV)- 1 mark N/A- 0 space } N/A- Om in ATARI BASIC te kijken of een poort ready is gaat als- volgt:- STATUS #1,A- } IF PEEK(747)<128 THEN - De locaties 748 en 749 worden niet gebruikt.- }EBinnen concurrent I/O mode:F- De uitvoering van STATUS #1,A zorgt er voor dat in de- adressen 746-74}9 bepaalde status waarden van de 850 komen te- staan.- Locatie 746 wordt niet gebruikt.- Loc}atie 747 en 748 bevatten het aantal karakters dat in het- input buffer is opgeslagen. Dit aantal wordt als volgt}- berekend in ATARI BASIC:- = PEEK(747)+PEEK(748)*256- Locatie 749 bevat het} aantal karakters in het output buffer.- Dit wordt als volgt bepaald in ATARI BASIC:- =PEEK(749)- De auteur hoopt hiermee een goede eenvoudige en- overzichtelijke referentie gegeven} te hebben van de 850- interface. Deze handleiding is sterk gericht op modemgebruik,- maar is ook enigz}ins bruikbaar met andere apparaten die op de- seriele poorten van de 850 zijn aangesloten. De tekst kan het- } best worden gebruikt met de originele handleiding van de 850- interface. Als er op- of aanmerkingen zijn op }de tekst of- layout, laat dan aub. een bericht achter op ATARI benelux BBS- (tel:03473-77584 tnv. Patri}ck Holthuizen, subj. 850REF.TXT)- of schrijf naar:- Patrick Holthuizen- Dresdenlaan 4- } 5691 GT- Son- Vermeld boven de brief: "subject: 850REF.TXT". Vermeld aub.- ook eigen n}aam en adres, als de opmerkingen of aanvullingen- terecht zijn of een goede nuttige aanvulling zijn op de- } huidige tekst, dan ontvangt u de nieuwe tekst vanzelf op het- opgegeven adres.- Deze tekst is zuive}r public domain en de auteur heeft niet de- intentie gehad enige copyrights te schenden. Ondanks dat de- } tekst sterk de originele (engelse) handleiding volgt van de- 850 interface is de auteur toch van mening dat deze} tekst een- goede bijdrage zal zijn om de werking van de 850 interface te- verduidelijken. De auteur be}houdt alle recht zich van- eventuele genoemde plichten te onttrekken. Laat deze tekst- aub. intact, als} u wijzigingen wilt doorvoeren geef eerst een- seintje aan de auteur, als deze het eens is met de wijziging- } krijgt u automatisch de nieuwe versie van de tekst- thuisgestuurd. Als de auteur het niet eens is met de-} wijziging, ga dan pas zelf wijzigingen aanbrengen.- r het niet eens is met de-`12 4 1 5 0 10 70 2 12 144850 referentie kaart door Patrick HolthuizenDeze tekst moet worden gebruikt met een dire }ct connect modem op poort 1. Deze tekst is echter ook bruikbaar om snel de poort referenties op te zoeken voor andere toepass }ingen.2771Default instellingen27721.300 baud8 bits per woord1 stop bit per woordGeen input parityOutput parity is } 0DSR, CTS, CRX worden niet getest (DSR= data set ready, CTS= clear to send, CRX= carrier detect)2.Geen Linefeed (=LF) na }carriage return (=CR)Lichte vertaling (light translation)3.Uitgaande lijnen DTR, RTS zijn laag (DTR= data terminal ready, }RTS= request to send)De onderdelen van groep 1 kunnen met XIO 36,#chn,aux1,aux2,"Rn:" ingesteld te worden. Onderdelen van 2 } met XIO 38,.. en van 3 met XIO 34,..2771Het controleren van de uitgaande lijnen DTR, RTS en XMT2772DTR = data termina }l readyRTS = request to sendXMT = data transmit (alleen gebruikt voor break signaal)Het commando is: 2771XIO 34,#chn,aux }1,aux2,"Rn:"2772aux1 tel op(DTR)0 geen verandering aan huidige DTR instelling128 zet DTR uit192 zet DTR aan(RTS)0 } geen verandering aan huidige RTS instelling32 zet RTS uit48 zet RTS aan(XMT)0 geen verandering aan huidige XMT inst }elling2 zet XMT op space (0)3 zet XMT op mark (1)aux2 is altijd 0Het XMT signaal wordt gebruikt om een break signaal } te zenden. Dit gebeurt door XMT op space te zetten en dan na een (hele) korte tijd weer op mark te zetten. Het RTS signaal w }ordt zelden gebruikt. Het DTR signaal wordt gebruikt om bijvoorbeeld op te hangen tijdens transmissie. Dit gebeurt door DTR u }it te zetten en dan daarna weer aan om weer normaal contact met de modem te hebben.2771Het instellen van de baud rate, w }oord grootte, aantal stop bits, testen van de DSR, CTS en CRX lijnen.2772DSR = data set (modem) readyCTS = clear to send }CRX = carrier detectHet commando is: 2771XIO 36,#chn,aux1,aux2,"Rn:"2772aux1 tel op(baud rate)0 300 bps *1 45 }.5 bps2 50 bps3 56.875 bps4 75 bps5 110 bps6 134.5 bps7 150 bps8 300 bps *9 600 } bps10 1200 bps *11 1800 bps12 2400 bps *13 4800 bps *14 9600 bps *15 9600 bps * *= interessante } modem snelheden(woord grootte)0 8 bits16 7 bits (5, 6 en 7 bits kunnen niet gebruikt worden32 6 bits boven 300 baud }. Ook niet in concurrent I/O als48 5 bits output in half duplex en ook niet in full duplex)(aantal stop bits per woord)0 } 1 stop bit128 2 stop bitsaux2 tel op(testen van DSR, CTS, CRX)0 geen enkele lijn kan getest worden1 CRX2 } CTS3 CTS CRX4 DSR5 DSR CRX6 DSR CTS7 DSR CTS CRXDe CTS lijn wordt zelden gebruikt bij modem co }mmunicatie.2771Vertaling en parity2772Het commando is: 2771XIO 38,#chn,aux1,aux2,"Rn:"2772aux1 tel op(vertaling })0 lichte ATASCII/ASCII vertaling16 zware ATASCII/ASCII vertaling32 geen vertaling(input parity)0 ontken parity e }n laat parity onveranderd4 test voor oneven (odd) parity en maak parity 08 test voor even (even) parity en maak parity }012 ontken parity en maak parity 0(output parity)0 laat parity onveranderd1 zet parity op oneven (odd)2 zet parit }y op even (even)3 zet parity op 1(linefeed)0 voeg geen linefeed toe64 voeg linefeed toe na CR (bij vertaling van EOL } naar CR)aux2(niet-vertaal-karakter)XXX a(ta)scii code van het niet-vertaal-karakterHet niet-vertaal-karakter wordt gebru }ikt bij zware vertaling. Dit is het karakter waarin alle data wordt vertaald die tussen de waarde 0-32 inligt of groter is da }n 124.Lichte vertaling: De enige vertaling is die van EOL -> CR (155 -> 13)Zware vertaling: EOL -> CR 0-32 }-> niet-vertaal-karakter >124-> niet-vertaal-karakter2771Concurrent I/O mode2772In deze mode vindt de } werkelijke communicatie plaats tussen modem en computer. In deze paragraaf wordt uitgelegd in welke volgorde alle commando's } gepleegd moeten worden.Eerst moeten alle instellingen gedaan worden met behulp van XIO 34,36,38. Een voorbeeldinstelling i }s:--DTR aan -RTS uit -XMT mark--300 baud -woordgrootte 8 bits -1 stopbit -DSR, CTS, CRX niet testbaar--lichte ATASCII }/ASCII vertaling -ontken input parity en laat input parity onveranderd -laat output parity onveranderd -voeg LF toe na CR }Dit wordt in ATARI BASIC als volgt bewerkstelligd:-XIO 34,#1,192+32+3,0,"R:" dit komt overeen met XIO 34,#1,227,0,"R:"-XI }O 36,#1,0+0+0,0,"R:" dit komt overeen met XIO 36,#1,0 ,0,"R:"-XIO 38,#1,0+0+0+64,0,"R:" dit komt overeen met XIO 38,#1 },64 ,0,"R:"Na het instellen van de 850 moet worden overgeschakeld naar concurrent I/O mode om contact met de modem te krijge }n. Dit gebeurt als volgt in ATARI BASIC:2771OPEN #1,13,0,"R:"XIO 40,#1,0,0,"R:"...2772Om weer uit de concurrent I/O m }ode te treden moet je het gebruikte kanaal gewoon sluiten. In ATARI BASIC:2771CLOSE #12772Let op dat als je de concurre }nt I/O verlaat, dat het I/O buffer gewist wordt. Als je in de concurrent I/O mode zit kun je geen instellingen op de 850 vera }nderen, om die instellingen te veranderen moet je eerst uit de concurrent I/O mode treden. Als je in de concurrent I/O mode z }it en je wilt even iets aan de instelling veranderen (bijvoorbeeld de baud rate aanpassen) en daarna weer doorgaan met de com }municatie, dan gaat dat als volgt in ATARI BASIC:CLOSE #1OPEN #1,13,0,"R: }"XIO 40,#1,0,0,"R:"NB. Bij het ingaan van concurrent I/O moeten de testbare lijnen, die zijn ingeste }ld met XIO 36,.., aan staan, anders treedt een error op.2771Communicatie in concurrent I/O mode2772Als je wilt communi }ceren met de modem of degene waarmee de modem in verbinding staat, dan kun je gebruik maken van de gewone PUT, GET, PRINT en }INPUT operaties van ATARI BASIC.2771PUT2772 : PUT #1,A stopt de ASCII waarde van A in het output buffer (na eventuele ve }rtaling en toevoeging van LF). Het buffer wordt door de 850 op de snelheid van de baud rate geleegd, als het buffer vol raakt }, dan wacht het PUT comando tot er plaats is in het buffer en stopt de ASCII waarde van A dan in het buffer.2771GET2772 }: GET #1,A haalt een ASCII waarde uit het input buffer en stopt dat (na eventuele vertaling van CR naar EOL en waarden tussen } 0-32 en >124 naar een niet-vertaal-karakter) in A. Als er geen waarde in het buffer beschikbaar is, dan wacht het GET comman }do tot er een teken in het buffer zit en voert dan het commando uit.2771PRINT2772 : PRINT #1;A($) werkt hetzelfde als PU }T maar is regel-georienteerd, je kunt dus een hele regel wegsturen.2771INPUT2772 : INPUT #1,A($) werkt hetzelfde als GET } maar is regelgeorienteerd. Let op dat de input eindigt met een EOL want die heeft het INPUT commando nodig om te eindigen.N }B1. Om te voorkomen dat je een GET of INPUT doet met een leeg buffer, zodat de computer eeuwig blijft wachten tot er input is }, moet eerst gecontroleerd worden of het buffer leeg is. Is het buffer namelijk leeg, dan mag de GET of INPUT niet uitgevoerd } worden. Hoe je dit doet staat in volgende paragraaf over STATUS.NB2. Let op dat als de karakters niet snel genoeg uit het i }nput buffer gehaald worden en het buffer raakt vol, dan wordt het buffer gewist en wordt weer gevuld vanaf het begin, hierdoo }r kun je dus karakters kwijtraken. Zorg dus dat je de karakters snel genoeg uit het buffer haalt, maak desnoods gebruik van m }achinetaal routines (vooral als je op hogere baud rates werkt).NB3. Binnen concurrent I/O kan geen gebruik worden gemaakt va }n andere apparaten die op de seriele poort zijn aangesloten (zoals printer, diskdrive ed.). Als je dus tijdens de communicati }e met de 850 in concurrent I/O iets wilt uitprinten, moet je eerst uit de concurrent I/O. Dan pas kun je printen.2771Stat }us van de 8502772De status van de 850 kan in ATARI BASIC getest worden met het STATUS commando. Let echter op dat het STAT }US commando andere resultaten levert als je in de concurrent I/O mode zit of niet in de concurrent I/O mode zit. Het commando } wordt als volgt gegeven: STATUS #1,var2771Zowel in concurrent I/O mode als daarbuiten:2772STATUS #1,A zorgt ervoor dat } een status over de 850 gepleegd wordt. In de variabele A wordt de operatie/error code van het STATUS commando zelf gezet.A= } 1 ->succesvolle STATUSA<>1 ->niet succesvolle STATUSAls A<>1 dan ligt de fout bij de communicatie tussen computer en inter }face. Waarschijnlijk een programmeerfout (of erger).2771Buiten concurrent I/O mode:2772De uitvoering van STATUS #1,A zo }rgt er voor dat in de adressen 746-749 bepaalde status waarden van de 850 komen te staan.Locatie 746:bit 0 Error on command } to interface modulebit 1 Error on block data transfer outbit 2 External device not fully readybit 3 Illegal option combin }ation attemptedbit 4 Recieved data buffer overflow errorbit 5 Received data parity errorbit 6 Received data byte overrun e }rrorbit 7 Received data framing errorLocatie 747: Bevat informatie over de huidige status van de lijnen DSR, CTS, CRX en RC }V (RCV= data recieve).Opgeteld bij locatie 747 Nu: tussen vorige STATUS en nu:(DSR)192 aan altijd aan274 }512827450 27451aan27450 niet altijd aan64 uit niet altijd uit0 uit altijd uit(CTS)48 aan } altijd aan27451227450 27451aan27450 niet altijd aan16 uit niet altijd uit0 uit altijd }uit(CRX)12 aan altijd aan2745127450 27451aan27450 niet altijd aan4 uit niet altijd uit0 } uit altijd uit(RCV)1 mark N/A0 space N/AOm in ATARI BASIC te kijken of een poort ready is ga }at als volgt:STATUS #1,AIF PEEK(747)<128 THEN De locaties 748 en 749 worden niet gebruikt.2771Binnen concur }rent I/O mode:2772De uitvoering van STATUS #1,A zorgt er voor dat in de adressen 746-749 bepaalde status waarden van de 85 }0 komen te staan.Locatie 746 wordt niet gebruikt.Locatie 747 en 748 bevatten het aantal karakters dat in het input buffer i !}s opgeslagen. Dit aantal wordt als volgt berekend in ATARI BASIC:= PEEK(747)+PEEK(748)*256Locatie 749 bev "}at het aantal karakters in het output buffer. Dit wordt als volgt bepaald in ATARI BASIC:=PEEK(749)De au #}teur hoopt hiermee een goede eenvoudige en overzichtelijke referentie gegeven te hebben van de 850 interface. Deze handleidin $}g is sterk gericht op modemgebruik, maar is ook enigzins bruikbaar met andere apparaten die op de seriele poorten van de 850 %}zijn aangesloten. De tekst kan het best worden gebruikt met de originele handleiding van de 850 interface. Als er op- of aanm &}erkingen zijn op de tekst of layout, laat dan aub. een bericht achter op ATARI benelux BBS (tel:03473-77584 tnv. Patrick Holt '}huizen, subj. 850REF.TXT) of schrijf naar:Patrick HolthuizenDresdenlaan 45691 GTSonVermeld boven de brief: "subject: 850 (}REF.TXT". Vermeld aub. ook eigen naam en adres, als de opmerkingen of aanvullingen terecht zijn of een goede nuttige aanvulli )}ng zijn op de huidige tekst, dan ontvangt u de nieuwe tekst vanzelf op het opgegeven adres.Deze tekst is zuiver public domai *}n en de auteur heeft niet de intentie gehad enige copyrights te schenden. Ondanks dat de tekst sterk de originele (engelse) h +}andleiding volgt van de 850 interface is de auteur toch van mening dat deze tekst een goede bijdrage zal zijn om de werking v ,}an de 850 interface te verduidelijken. De auteur behoudt alle recht zich van eventuele genoemde plichten te onttrekken. Laat -}deze tekst aub. intact, als u wijzigingen wilt doorvoeren geef eerst een seintje aan de auteur, als deze het eens is met de w .}ijziging krijgt u automatisch de nieuwe versie van de tekst thuisgestuurd. Als de auteur het niet eens is met de wijziging, g /}a dan pas zelf wijzigingen aanbrengen. versie van de tekst thuisgestuurd. Als de auteur het niet eens is met de wijziging, g 'De file 850REF.TXT is geschrevenmet ATARIWRITER en moet daar ookmee uitgeprint worden. Heeft uechter dit programma nietbe1}schikbaar, print dan de file850REF.ASC uit met behulp van decopy funktie van DOS 2.x. Dit gaatals volgt vanuit het DOSmenu2}:C Dx:850REF.ASC,P: NB. De file 850REF.ASC is afgestemdop EPSON printers.Voor mensen die ATARIWRITERge3}bruiken, let er op dat deinstellingen op de bovenste regelgoed zijn ingesteld. Het staat inde file als volgt ingesteld:804} kolommenpagina lengte 144(!) halve regels (dit is iets langer dan een A4, dus pas op)De tekst is vooral bedoelt voord5}iegene die met de 850 interfacewillen programmeren. De auteurstaat altijd open voor op- en/ofaanmerkingen op de tekst. Zie6} vooradres en/of telefoonnummer heteinde van de tekst.uteurstaat altijd open voor op- en/ofaanmerkingen op de tekst. Zie9@C@BAD@E JK V8BJK V'ҍҩҍ`R:d open voor op- en/ofaanmerkingen op de tekst. ZieJ10 .TITLE "Baud rate instellen van 19200 bps"20 *= $400030 LDX #$10 Gebruik kanaal #140 LDA #$03 Open50 STA $342,X Z9}et ICCOM60 LDA #RFILE&$FF LO-"R:"70 STA $344,X Zet ICBAL80 LDA #RFILE/$100 HI-"R:"90 STA $345,X Zet ICBAH0100 LDA #:}$0D Concurrent input en output0110 STA $34A,X Zet AUX10120 LDA #$00 AUX2:=00130 STA $34B,X Zet AUX20140 JSR $E456 Voe;}r OPEN #1,13,0,"R:" uit0150 LDX #$10 Gebruik kanaal #10160 LDA #$38 XIO 40,..0170 STA $342,X Zet ICCOM0180 LDA #$00 A<}UX1:=0 en AUX2:=00190 STA $34A,X Zet AUX10200 STA $34B,X Zet AUX20210 JSR $E456 Voer XIO 40,#1,0,0,"R:" uit0220 LDA #=}$27 LO-baud rate0230 STA $D200 Zet AUDF10240 STA $D204 Zet AUDF30250 LDA #$00 HI-baud rate0260 STA $D202 Zet AUDF202>}70 STA $D206 Zet AUDF40280 RTS Keer terug0290 RFILE .BYTE "R:",$9B0300 .END0 HI-baud rate0260 STA $D202 Zet AUDF202R@O8PWF52- - 850REFG804900Bv1.1- 850@} referentie kaart voor gevorderden door Patrick- Holthuizen.- EInleidingF- Deze tekA}st over de 850 interface is de tweede in serie. Deze- tekst is bedoeld voor de meer gevorderde programmeur die alB}- enig verstand heeft van machinetaal. In deze tekst zal in- tegenstelling tot de tekst voor beginners oC}ok de printerpoort- (kort) behandeld worden. Voor sommige dingen zal worden- verwezen naar de vorige teD}kst dus voor goed gebruik van deze- tekst is het noodzakelijk dat u de andere tekst ook heeft. De- andeE}re tekst is beschikbaar op Atari Benelux BBS. Voor het- telefoonnummer zie einde tekst. Ook kan de tekst verkregenF}- worden bij de auteur. Voor het adres zie eveneens einde- tekst.- EHet inladen van G}de handlerF- Om goed met de 850 interface te kunnen werken heb je een- handler nodig. De handler van dH}e printer (P:) is al in het- geheugen aanwezig. De handler van de seriele poorten (R:) is- niet in het I}geheugen aanwezig en moet worden ingeladen.- Gewoonlijk wordt de R: handler vanaf de 850 zelf ingeladen,- J} het kan eventueel ook van disk.- EHet inladen vanaf de 850 interface:F- De handler is in de 850 inK} drie verschillende programma- blokken opgedeeld.- Deel 1: Bevat enkel laad-informatie voor het tweede L}deel.- Deel 2: Stelt de MEMLO pointers opnieuw in, stelt een sprong- tabel op en laadt het derde deel iM}n.- Deel 3: De eigenlijke handler. Stelt de handler op en keert- terug naar het lopende programma.- N} Waarom is het inladen verdeeld in drie blokken en niet gewoon- een blok inladen (het derde) en klaar?- O} De reden hiervoor is:- Deel 1: Om compatibaliteit met andere versies van de 850 te- garanderen,P} kan het inladen van een blok verschillen- (bv.programma-lengte). Hiervoor moet iedere 850 zijn eigen- Q}laad-informatie bij zich dragen.- Deel 2: De 850 handler komt onder MEMLO te zitten en bij- aanvang vanR} inladen van de handler kan de MEMLO pointer- verschillen (bv.wel of geen DOS aanwezig). Dus moet van te- S} voren eerst gekeken worden naar de MEMLO pointer, dan moet- deel drie worden ingeladen op de plaats van MEMLO, T}de sprong- adressen van deel drie moeten worden aangepast en tenslotte- moet de MEMLO pointer opgehoogdU} worden.- EHet inladen van de drie delen:F- Het DCOMND commando voor deel 1 is $3F- Het DCV}OMND commando voor deel 2 is $21- Het DCOMND commando voor deel 3 is $26- De source van het inladen vanW} de R: handler (RS232.SRC/OBJ):- 0000 10 .TITLE "R: lader"- 0000 X} 20 *= $4000 De inlader van ATARI- begint op $3FD- 4000 A950 30 LDA #$50 Y} R1:- 4002 8D0003 40 STA $300 Zet DDEVIC- 4005 A901 50 LDA #$01 DeviZ}ce nr.1- 4007 8D0103 60 STA $301 Zet DUNIT- 400A A93F 70 LDA #$3F Laad [}deel 1- 400C 8D0203 80 STA $302 Zet DCOMND- 400F A940 90 LDA #$40 Recei\}ve data- 4011 8D0303 0100 STA $303 Zet DSTATS- 4014 A94F 0110 LDA #BUF&$FF LO-b]}uffer- 4016 8D0403 0120 STA $304 Zet DBUFLO- 4019 A940 0130 LDA #BUF/$100 HI-buf^}fer- 401B 8D0503 0140 STA $305 Zet DBUFHI- 401E A905 0150 LDA #$05 Time-out_} van 5 sec.- 4020 8D0603 0160 STA $306 Zet DTIMLO- 4023 A90C 0170 LDA #$0C `}LO-#bytes- 4025 8D0803 0180 STA $308 Zet DBYTLO- 4028 A900 0190 LDA #$00 HIa}-#bytes- 402A 8D0903 0200 STA $309 Zet DBYTHI- 402D 8D0A03 0210 STA $30A Zet b}DAUX1 (DAUX1:=0)- 4030 8D0B03 0220 STA $30B Zet DAUX2 (DAUX2:=0)- 4033 2059E4 0230 c}JSR $E459 Laad deel 1- 4036 1001 0240 BPL NEXT1 Succesvolle poging->- NEXT1- d} 4038 60 0250 END1 RTS Keer terug, handler- niet geladen- 4039 A20B 0260 NEXT1 Le}DX #$0B X:=#$0B (counter)- 403B BD4F40 0270 LOOP1 LDA BUF,X A:=Laad informatie- voor deel 2f}- 403E 9D0003 0280 STA $300,X Sla info op in device- control block- 4041 CA 0g}290 DEX X:=X-1- 4042 10F7 0300 BPL LOOP1 X>=0-> LOOP1- 4044 2059E4 0310q}"B%DOS SYSB*)DUP SYSB}S850REF ASCB`850REF TXTB0README 1STB719200BPSOBJB819200BPSSRCB?850REFG ASCB850REFG TXTBOWNBUF OBJBOWNBUF SRCBRS232 OBJB RS232 SRCBRS2322 OBJB RS2322 SRCBREADME 2ND JSR $E459 Laad deel 2- 4047 30EF 0320 BMI END1 Niet-succesvolle- poging-> Er}ND1- 4049 200605 0330 JSR $506 Spring naar deel 2- ($506=start-adres)- 404C 6C0s}C00 0340 JMP ($0C) Keer terug (naar- DOSINI)- 404F 00 0350 BUF .BYTE 0,0,0,0,0,0,0,0t},0,0,0,0,0- 4050 00- 4051 00- 4052 00- 4053 00- 4054 00- 40u}55 00- 4056 00- 4057 00- 4058 00- 4059 00- 405A 00v}- 405B 00- 405C 0360 .END- Officieel behoor je eerst deel 1 te laden, daarna metw} behulp- van deel 1 wordt deel 2 geladen. Daarna wordt de controle- overgegeven aan deel 2 die de rest x}verzorgt. Er kleeft echter- een nadeel aan deze methode, als je een keer de handler- geladen hebt, lukty} het geen tweede keer zonder de computer of- 850 uit te zetten. Dus als de computer gereset wordt- (colz}dstart), wordt de R: handler uit het geheugen gewist. Een- ander nadeel is dat als een drive op double density wor{}dt- gezet het kan gebeuren dat de 850 het commando ziet om deel 1- te laden. Dit heeft geen consequenti|}es voor het op double- density schakelen van de drive, maar daarna kan de R: handler- niet meer geladen}} worden zonder de 850 (of computer) uit/aan- te schakelen. Je kunt dit laatste probleem oplossen door- ~}netjes de 850 pas aan te zetten als hij gebruikt moet worden.- Maar het is handiger om een lader te hebben die de }R: handler- altijd (tenzij de handler al aanwezig is in het geheugen)- inlaadt ongeacht of hij al een k}eer eerder is ingeladen. De- source-listing (RS2322.SRC/OBJ):- 0000 10 .TITLE "R: lader} 2"- 0000 20 *= $4000- 4000 A000 30 LDY #$0 Y:=0- 4002 B}91A03 40 LOOP1 LDA $31A,Y A:=HATABS device- letter- 4005 C952 50 CMP #'R A=#'R}?- 4007 D001 60 BNE SEARCH R: niet gevonden->- SEARCH- 4009 60 70 END1 } RTS Keer terug (R: al- aanwezig)- 400A C8 80 SEARCH INY Y:=Y+1- } 400B C8 90 INY Y:=Y+1- 400C C8 0100 INY Y:=Y+1- 400D C0}1E 0110 CPY #$1E Y=#$1E?- 400F D0F1 0120 BNE LOOP1 Einde HATABS niet- bere}ikt-> LOOP1- 4011 A950 0130 LDA #$50 R1:- 4013 8D0003 0140 STA $300 Zet DDE}VIC- 4016 A901 0150 LDA #$01 Device nr.1- 4018 8D0103 0160 STA $301 Zet DUN}IT- 401B A921 0170 LDA #$21 Laad deel 2- 401D 8D0203 0180 STA $302 Zet DCOM}ND- 4020 A940 0190 LDA #$40 Receive data- 4022 8D0303 0200 STA $303 Zet DST}ATS- 4025 A900 0210 LDA #$00 LO-buffer, DAUX1,- DAUX2- 4027 8D0403 0220 } STA $304 Zet DBUFLO- 402A 8D0A03 0230 STA $30A Zet DAUX1 (DAUX1:=0)- 402D 8D0B03 0}240 STA $30B Zet DAUX2 (DAUX2:=0)- 4030 A905 0250 LDA #$05 HI-buffer- 4032 }8D0503 0260 STA $305 Zet DBUFHI- 4035 A902 0270 LDA #$02 Time-out van 2 sec.- } 4037 8D0603 0280 STA $306 Zet DTIMLO- 403A A955 0290 LDA #$55 LO-#bytes}- 403C 8D0803 0300 STA $308 Zet DBYTLO- 403F A901 0310 LDA #$01 HI-#b}ytes- 4041 8D0903 0320 STA $309 Zet DBYTHI- 4044 2059E4 0330 JSR $E459 Laad de}el 2- 4047 30C0 0340 BMI END1 Niet-succesvolle- poging-> END1- 4049 200605 03}50 JSR $506 Spring naar deel 2- 404C 6C0C00 0360 JMP ($0C) Spring naar DOSINI- } 404F 0370 .END- Het is natuurlijk ook mogelijk de hele handler van disk te- laden, maar }op deze manier is het wel zo snel en gemakkelijk.- Het feit dat deel 1 nu niet geladen wordt is wat dubieus,- } maar alle 850 versies behoren hier mee te werken.- EHet gebruik van de handlerF- Een gr}oot gedeelte van het gebruik van de handler staat- beschreven in de beginners versie van deze tekst en dat zal-} dan ook niet herhaald worden (op enkele uitzonderingen na).- EHet instellen van de baud rateF-} We veronderstellen een woord grootte van 8 bits, 1 stop bit,- DSR, CTS en CRX niet testbaar.- } aux1 tel op- (baud rate)- XIO Pokey baud rate- 0 $0BA0 300 bps *- 1 $4C}CD 45.5 bps- 2 $45E3 50 bps- 3 $3D6F 56.875 bps- 4 $2E95 75 bps- } 5 $1FC0 110 bps- 6 $19F6 134.5 bps- 7 $1746 150 bps- 8 $0BA0 300 b}ps *- 9 $05CC 600 bps- 10 $02E3 1200 bps *- 11 $01EA 1800 bps- 12 }$016E 2400 bps *- 13 $00B3 4800 bps *- 14 $0056 9600 bps *- 15 $0056 9600 bps} *- $0027 19200 bps- *= interessante modem snelheden- Het instellen van een normal}e baud rate, met uitzondering van- 19200 bps, gaat gewoon met het XIO 36,.. commando (normaal- wil zegg}en zend/ontvangst baud rate gelijk). Het instellen- van de speciale baud rates (in concurrent I/O) gaat als- } volgt:- EHet instellen van 19200 bps:F- -Stel de 850 in met behulp van XIO 34, 36 en 38 (de bau}d rate- mag willekeurig worden bepaald).- -Open het gebruikte kanaal met OPEN #chn,aux1,aux2,"Rn:"}- aux1 tel op- (input/output mode)- 5 Concurrent input- 9 Concur}rent output- 13 Concurrent input en output- aux2 is altijd 0- -Start concurrent I/}O met XIO 40,#chn,aux1,aux2,"R:"- aux1 tel op- (buffer mode)- 0 32 byte buffer op vaste pl}aats- 13 Buffer op geheugenplaats door de gebruiker te bepalen- aux2 is altijd 0- -Pas de a}dressen $D200 (LO-output baud rate), $D202- (HI-output baud rate), $D204 (LO-input baud rate), $D206- (}HI-input baud rate) volgens de pokey tabel aan. In dit- geval:- $D200 #$27- $D202 #$00-} $D204 #$27- $D206 #$00- De source listing voor het instellen op 19200 bps- (19200}BPS.SRC/OBJ):- 0000 10 .TITLE "Baud rate instellen van 19200- bps"- 0000 } 20 *= $4000- 4000 A210 30 LDX #$10 Gebruik kanaal #1- 4002 A903 40 } LDA #$03 Open- 4004 9D4203 50 STA $342,X Zet ICCOM- 4007 A941 60 L}DA #RFILE&$FF LO-"R:"- 4009 9D4403 70 STA $344,X Zet ICBAL- 400C A940 80 LDA }#RFILE/$100 HI-"R:"- 400E 9D4503 90 STA $345,X Zet ICBAH- 4011 A90D 0100 LDA #$0}D Concurrent input en- output- 4013 9D4A03 0110 STA $34A,X Zet AUX1- 4016 A9}00 0120 LDA #$00 AUX2:=0- 4018 9D4B03 0130 STA $34B,X Zet AUX2- 401B 2056E4 0}140 JSR $E456 Voer OPEN #1,13,0,"R:"- uit- 401E A210 0150 LDX #$10 Gebruik k}anaal #1- 4020 A938 0160 LDA #$38 XIO 40,..- 4022 9D4203 0170 STA $342,X Zet }ICCOM- 4025 A900 0180 LDA #$00 AUX1:=0 en AUX2:=0- 4027 9D4A03 0190 STA $34A,X } Zet AUX1- 402A 9D4B03 0200 STA $34B,X Zet AUX2- 402D 2056E4 0210 JSR $E456 Voe}r XIO- 40,#1,0,0,"R:" uit- 4030 A927 0220 LDA #$27 LO-baud rate- 4032 8D00D2 }0230 STA $D200 Zet AUDF1- 4035 8D04D2 0240 STA $D204 Zet AUDF3- 4038 A900 025}0 LDA #$00 HI-baud rate- 403A 8D02D2 0260 STA $D202 Zet AUDF2- 403D 8D06D2 027}0 STA $D206 Zet AUDF4- 4040 60 0280 RTS Keer terug- } 4041 52 0290 RFILE .BYTE "R:",$9B- 4042 3A- 4043 9B- 4044 0300 .END- } EHet instellen van verschillende baud rates voor zenden en- ontvangen.F- Dit gaat hetzelfde a}ls het instellen van 19200 bps met als- verschil dat de pokey adressen ($D200-$D206, AUDF1-4) anders- m}oeten worden aangepast. Voor een baud rate van 1200/75- moeten de adressen als volgt aangepast worden:- } $D200 (LO-output) #$95- $D202 (HI-output) #$2E 75 bps- $D204 (LO-input) #$E3- $D206 (HI}-input) #$02 1200 bps- EConcurrent I/O modeF- Het instellen van concurrent I/O met intern in}put buffer gaat- als beschreven in de beginners tekst. Het interne input- buffer heeft echter een lengt}e van 32 bytes wat tamelijk- klein is, echter bij het gebruik van machinetaal groot genoeg- voor de mee}ste toepassingen. Het is echter mogelijk om een- groter input buffer te definieren dit kan alleen in- m}achinetaal (of met een machinetaal routine). Het gaat op- dezelfde manier als het instellen met een intern input}- buffer, alleen moeten nu de buffer adressen van het IOCB en- aux1 veranderd worden.- aux1 te}l op- (buffer mode)- 0 32 byte buffer op vaste plaats- 13 Buffer op geheugenplaats door d}e gebruiker te bepalen- aux2 is altijd 0- ICBAL/H bepalen de plaats van het input buffer.- I}CBLL/H bepalen de lengte van het input buffer.- Nu volgt een source listing van het instellen van concurrent- } I/O met een input buffer op pagina zes met een lengte van 256- bytes. Aangenomen wordt dat het gebruikte ka}naal, kanaal #1- is en dat OPEN #1,13,0,"R:" er al aan voorafgegaan is- (OWNBUF.SRC/OBJ):- 0}000 10 .TITLE "Eigen input buffer op pagina- 6 met lengte 256"- 0000 20 } *= $4000- 4000 A210 30 LDX #$10 Gebruik kanaal #1- 4002 A938 40 LDA #$3}8 XIO 40,..- 4004 9D4203 50 STA $342,X Zet ICCOM- 4007 A900 60 LDA #$00 } LO-$600- 4009 9D4403 70 STA $344,X Zet ICBAL- 400C A906 80 LDA #$06 H}I-$600- 400E 9D4503 90 STA $345,X Zet ICBAH- 4011 A900 0100 LDA #$00 LO-#by}tes- 4013 9D4803 0110 STA $348,X Zet ICBLL- 4016 A901 0120 LDA #$01 HI-#bytes}- 4018 9D4903 0130 STA $349,X Zet ICBLH- 401B A90D 0140 LDA #$0D Eigen input }buffer- 401D 9D4A03 0150 STA $34A,X Zet AUX1- 4020 A900 0160 LDA } #$00 AUX2:=0- 4022 9D4B03 0170 STA $34B,X Zet AUX2- 4025 2056E4 0180 JSR $E456} Voer operatie uit- 4028 60 0190 RTS Keer terug- 4029 0200 .END}- E850 interface commando'sF- De commando's die nu volgen zijn directe seriele commando's.-} Om er mee te werken moeten de waarden in de adressen- $300-$30B geladen worden en daarna een sprong maken} naar- $E459. Als er (SIO) achter het commando staat hoeven de- volgende adressen niet aangepast te wor}den: $300, $301, $303- en $306. Er moet dan naar $E453 gesprongen worden. Adres $307- hoeft nooit aange}past te worden. In de tabel wordt dit adres- altijd met $00 gevuld. Het zijn dus geen IOCB commando's.- } $300 01- $50 $01- - 302 03 04 05 06 07 08 09 0A 0B Commentaar- -----------------}------------------------------- $21 40 00 05 02 00 55 01 00 00 Laden van deel 2- $26 40 xx xx 05 00 91 }05 00 00 Laden van deel 3- $3F 40 xx xx 05 00 0C 00 00 00 Laden van deel 1- $41 00 00 00 08 00 00 00 xx} xx XIO 34,DAUX1/2- $42 00 00 00 08 00 00 00 xx xx XIO 36,DAUX1/2- $53 40 EA 02 08 00 02 00 00 00 Statu}s (SIO)- $57 80 xx xx 08 00 xx xx 00 00 Put (SIO)- $58 40 xx xx 08 00 09 00 xx xx XIO 40,DAUX1/2-} Het put commando in de tabel kan alleen gebruikt worden- buiten de concurrent I/O mode. Binnen de concurr}ent I/O mode- moet de PUT van de IOCB (R: handler) gebruikt worden.- De baud rate wordt totaal vanuit d}e handler bepaald. Het- enige wat de 850 met de baud rate doet, is het bepalen van- sample snelheid waa}rmee de inkomende en uitgaande bits moeten- worden gesampeled.- De vertaling wordt helemaal door de han}dler geregeld.- De uitgaande lijnen DTR, RTS en XMT worden helemaal door de- 850 geregeld.- }De start van concurrent I/O verteld de 850 dat hij kan gaan- sampelen. De baud rate en communicatie worden door de} handler- geregeld.- Het testen van de lijnen DSR, CTS en CRX en de woord grootte- worden do}or de handler geregeld. De computer ontvangt alleen- woorden van 8 bits.- Bij de directe I/O tussen com}puter en 850 heeft het zin de- volgende informatie in DAUX1/2 mee te sturen.- commando: DAUX1: } DAUX2:- $41 XIO 34 Alles (hetzelfde als het XIO commando in BASIC)- $42 XIO 36 Woord gro}otte, stop bits Te testen lijnen- $58 XIO 40 Niets, alleen start van concurrent I/O aangeven}- EDe printer poortF- De printer handler is al in de computer aanwezig en hoeft dus- }niet ingeladen te worden. De printer kan volledig met de P:- handler bestuurd worden of via de SIO (met de normale} Put- ($50) en Get ($52) operaties). Let op dat de 850 iedere byte- met de waarde 155 ($9B) vertaalt na}ar een 13 ($0D), voor- normaal gebruik met een Epson compatible printer moet er na- iedere return ook e}en line-feed volgen. Dit is op de printer- in te stellen met dip-switches. Let daarbij op dat als je een- } tekening uitprint, dat je geen 155's wegstuurd, want de 850- vertaalt de 155 in een 13 en de printer vertaalt d}e 13 in 13- en 10 ($0A), waardoor de tekening misvormd kan/zal worden.- De auteur hoopt hiermee }een goede (eenvoudige) en- overzichtelijke referentie gegeven te hebben van de 850- interface. Deze han}dleiding is sterk gericht op modemgebruik,- maar is ook enigzins bruikbaar met andere apparaten die op de- } seriele poorten van de 850 zijn aangesloten. De tekst kan het- best worden gebruikt met de originele handleidi}ng van de 850- interface. Als er op- of aanmerkingen zijn op de tekst of- layout, laat dan aub. een ber}icht achter op ATARI benelux BBS- (tel:03473-77584 tnv. Patrick Holthuizen, subj. 850REFG.TXT)- of schr}ijf naar:- Patrick Holthuizen- Dresdenlaan 4- 5691 GT- Son- Vermeld bo}ven de brief: "subject: 850REFG.TXT". Vermeld aub.- ook eigen naam en adres, als de opmerkingen of aanvullingen-} terecht zijn of een goede nuttige aanvulling zijn op de- huidige tekst, dan ontvangt u de nieuwe tekst v}anzelf op het- opgegeven adres.- Deze tekst is zuiver public domain en de auteur heeft niet de- } intentie gehad enige copyrights te schenden. De auteur- behoudt alle recht zich van eventuele genoemde plichte}n te- onttrekken. Laat deze tekst aub. intact, als u wijzigingen- wilt doorvoeren geef eerst een seintj}e aan de auteur, als- deze het eens is met de wijziging krijgt u automatisch de- nieuwe versie van de t}ekst thuisgestuurd. Als de auteur het- niet eens is met de wijziging, ga dan pas zelf wijzigingen- aanb}rengen.- niet eens is met de wijziging, ga dan pas zelf wijzigingen- aanb-12 4 1 5 0 10 70 2 12 144850REFG804900Bv1.1850 referentie kaart voor gevorderden door Patrick Holthuizen.27!}71Inleiding2772Deze tekst over de 850 interface is de tweede in serie. Deze tekst is bedoeld voor de meer gevorderde progr"}ammeur die al enig verstand heeft van machinetaal. In deze tekst zal in tegenstelling tot de tekst voor beginners ook de prin"}terpoort (kort) behandeld worden. Voor sommige dingen zal worden verwezen naar de vorige tekst dus voor goed gebruik van deze"} tekst is het noodzakelijk dat u de andere tekst ook heeft. De andere tekst is beschikbaar op Atari Benelux BBS. Voor het tel"}efoonnummer zie einde tekst. Ook kan de tekst verkregen worden bij de auteur. Voor het adres zie eveneens einde tekst.277"}1Het inladen van de handler2772Om goed met de 850 interface te kunnen werken heb je een handler nodig. De handler van de p"}rinter (P:) is al in het geheugen aanwezig. De handler van de seriele poorten (R:) is niet in het geheugen aanwezig en moet w"}orden ingeladen. Gewoonlijk wordt de R: handler vanaf de 850 zelf ingeladen, het kan eventueel ook van disk.2771Het inlade"}n vanaf de 850 interface:2772De handler is in de 850 in drie verschillende programma blokken opgedeeld.Deel 1: Bevat enke"}l laad-informatie voor het tweede deel.Deel 2: Stelt de MEMLO pointers opnieuw in, stelt een sprong tabel op en laadt het de" }rde deel in.Deel 3: De eigenlijke handler. Stelt de handler op en keert terug naar het lopende programma.Waarom is het inla" }den verdeeld in drie blokken en niet gewoon een blok inladen (het derde) en klaar?De reden hiervoor is:Deel 1: Om compatiba" }liteit met andere versies van de 850 te garanderen, kan het inladen van een blok verschillen (bv.programma-lengte). Hiervoor " }moet iedere 850 zijn eigen laad-informatie bij zich dragen.Deel 2: De 850 handler komt onder MEMLO te zitten en bij aanvang " }van inladen van de handler kan de MEMLO pointer verschillen (bv.wel of geen DOS aanwezig). Dus moet van te voren eerst gekeke"}n worden naar de MEMLO pointer, dan moet deel drie worden ingeladen op de plaats van MEMLO, de sprong adressen van deel drie "}moeten worden aangepast en tenslotte moet de MEMLO pointer opgehoogd worden.2771Het inladen van de drie delen:2772Het D"}COMND commando voor deel 1 is $3FHet DCOMND commando voor deel 2 is $21Het DCOMND commando voor deel 3 is $26De source van"} het inladen van de R: handler (RS232.SRC/OBJ):0000 10 .TITLE "R: lader"0000 20 *= $4000 "} De inlader van ATARI begint op $3FD4000 A950 30 LDA #$50 R1:4002 8D0003 40 STA $300 Zet"} DDEVIC4005 A901 50 LDA #$01 Device nr.14007 8D0103 60 STA $301 Zet DUNIT400A A93F 70 "} LDA #$3F Laad deel 1400C 8D0203 80 STA $302 Zet DCOMND400F A940 90 LDA #$40 Re"}ceive data4011 8D0303 0100 STA $303 Zet DSTATS4014 A94F 0110 LDA #BUF&$FF LO-buffer4016 8D0403 012"}0 STA $304 Zet DBUFLO4019 A940 0130 LDA #BUF/$100 HI-buffer401B 8D0503 0140 STA $305 Ze"}t DBUFHI401E A905 0150 LDA #$05 Time-out van 5 sec.4020 8D0603 0160 STA $306 Zet DTIMLO4023 A9"}0C 0170 LDA #$0C LO-#bytes4025 8D0803 0180 STA $308 Zet DBYTLO4028 A900 0190 LDA #$00"} HI-#bytes402A 8D0903 0200 STA $309 Zet DBYTHI402D 8D0A03 0210 STA $30A Zet DAUX1 (DAUX1:=0)"}4030 8D0B03 0220 STA $30B Zet DAUX2 (DAUX2:=0)4033 2059E4 0230 JSR $E459 Laad deel 14036 1001 0"}240 BPL NEXT1 Succesvolle poging-> NEXT14038 60 0250 END1 RTS Keer terug, handler niet geladen"}4039 A20B 0260 NEXT1 LDX #$0B X:=#$0B (counter)403B BD4F40 0270 LOOP1 LDA BUF,X A:=Laad informatie voor deel "}2403E 9D0003 0280 STA $300,X Sla info op in device control block4041 CA 0290 DEX X:=X-140"}42 10F7 0300 BPL LOOP1 X>=0-> LOOP14044 2059E4 0310 JSR $E459 Laad deel 24047 30EF 0320 "}BMI END1 Niet-succesvolle poging-> END14049 200605 0330 JSR $506 Spring naar deel 2 ($506=start-adres)40" }4C 6C0C00 0340 JMP ($0C) Keer terug (naar DOSINI)404F 00 0350 BUF .BYTE 0,0,0,0,0,0,0,0,0,0,0,0,04050 00"!}4051 004052 004053 004054 004055 004056 004057 004058 004059 00405A 00405B 00405C 0360 .ENDOfficie""}el behoor je eerst deel 1 te laden, daarna met behulp van deel 1 wordt deel 2 geladen. Daarna wordt de controle overgegeven a"#}an deel 2 die de rest verzorgt. Er kleeft echter een nadeel aan deze methode, als je een keer de handler geladen hebt, lukt h"$}et geen tweede keer zonder de computer of 850 uit te zetten. Dus als de computer gereset wordt (coldstart), wordt de R: handl"%}er uit het geheugen gewist. Een ander nadeel is dat als een drive op double density wordt gezet het kan gebeuren dat de 850 h"&}et commando ziet om deel 1 te laden. Dit heeft geen consequenties voor het op double density schakelen van de drive, maar daa"'}rna kan de R: handler niet meer geladen worden zonder de 850 (of computer) uit/aan te schakelen. Je kunt dit laatste probleem"(} oplossen door netjes de 850 pas aan te zetten als hij gebruikt moet worden. Maar het is handiger om een lader te hebben die ")}de R: handler altijd (tenzij de handler al aanwezig is in het geheugen) inlaadt ongeacht of hij al een keer eerder is ingelad"*}en. De source-listing (RS2322.SRC/OBJ):0000 10 .TITLE "R: lader 2"0000 20 *= $4000 4"+}000 A000 30 LDY #$0 Y:=04002 B91A03 40 LOOP1 LDA $31A,Y A:=HATABS device letter4005 C952 50 ",} CMP #'R A=#'R?4007 D001 60 BNE SEARCH R: niet gevonden-> SEARCH4009 60 70 END1 RTS "-} Keer terug (R: al aanwezig)400A C8 80 SEARCH INY Y:=Y+1400B C8 90 INY Y:=Y+1".}400C C8 0100 INY Y:=Y+1400D C01E 0110 CPY #$1E Y=#$1E?400F D0F1 0120 BNE LO"/}OP1 Einde HATABS niet bereikt-> LOOP14011 A950 0130 LDA #$50 R1:4013 8D0003 0140 STA $300 Z"0}et DDEVIC4016 A901 0150 LDA #$01 Device nr.14018 8D0103 0160 STA $301 Zet DUNIT401B A921 017"1}0 LDA #$21 Laad deel 2401D 8D0203 0180 STA $302 Zet DCOMND4020 A940 0190 LDA #$40 "2}Receive data4022 8D0303 0200 STA $303 Zet DSTATS4025 A900 0210 LDA #$00 LO-buffer, DAUX1, DAUX2"3}4027 8D0403 0220 STA $304 Zet DBUFLO402A 8D0A03 0230 STA $30A Zet DAUX1 (DAUX1:=0)402D 8D0B03 02"4}40 STA $30B Zet DAUX2 (DAUX2:=0)4030 A905 0250 LDA #$05 HI-buffer4032 8D0503 0260 STA $"5}305 Zet DBUFHI4035 A902 0270 LDA #$02 Time-out van 2 sec.4037 8D0603 0280 STA $306 Zet DTI"6}MLO403A A955 0290 LDA #$55 LO-#bytes403C 8D0803 0300 STA $308 Zet DBYTLO403F A901 0310 "7} LDA #$01 HI-#bytes4041 8D0903 0320 STA $309 Zet DBYTHI4044 2059E4 0330 JSR $E459 Laad deel"8} 24047 30C0 0340 BMI END1 Niet-succesvolle poging-> END14049 200605 0350 JSR $506 Spring naar d"9}eel 2404C 6C0C00 0360 JMP ($0C) Spring naar DOSINI404F 0370 .ENDHet is natuurlijk ook mogelijk d":}e hele handler van disk te laden, maar op deze manier is het wel zo snel en gemakkelijk. Het feit dat deel 1 nu niet geladen ";}wordt is wat dubieus, maar alle 850 versies behoren hier mee te werken.2771Het gebruik van de handler2772Een groot ged"<}eelte van het gebruik van de handler staat beschreven in de beginners versie van deze tekst en dat zal dan ook niet herhaald "=}worden (op enkele uitzonderingen na).2771Het instellen van de baud rate2772We veronderstellen een woord grootte van 8 ">}bits, 1 stop bit, DSR, CTS en CRX niet testbaar.aux1 tel op(baud rate)XIO Pokey baud rate0 $0BA0 300 bps *1 $4C"?}CD 45.5 bps2 $45E3 50 bps3 $3D6F 56.875 bps4 $2E95 75 bps5 $1FC0 110 bps6 $19F6 134.5 bps"@}7 $1746 150 bps8 $0BA0 300 bps *9 $05CC 600 bps10 $02E3 1200 bps *11 $01EA 1800 bps12 $016E "A}2400 bps *13 $00B3 4800 bps *14 $0056 9600 bps *15 $0056 9600 bps * $0027 19200 bps *= interessant"B}e modem snelhedenHet instellen van een normale baud rate, met uitzondering van 19200 bps, gaat gewoon met het XIO 36,.. comm"C}ando (normaal wil zeggen zend/ontvangst baud rate gelijk). Het instellen van de speciale baud rates (in concurrent I/O) gaat "D}als volgt:2771Het instellen van 19200 bps:2772-Stel de 850 in met behulp van XIO 34, 36 en 38 (de baud rate mag willeke"E}urig worden bepaald).-Open het gebruikte kanaal met OPEN #chn,aux1,aux2,"Rn:"aux1 tel op(input/output mode)5 Concurrent"F} input9 Concurrent output13 Concurrent input en outputaux2 is altijd 0-Start concurrent I/O met XIO 40,#chn,a"G}ux1,aux2,"R:"aux1 tel op(buffer mode)0 32 byte buffer op vaste plaats13 Buffer op geheugenplaats door de gebruiker te "H}bepalenaux2 is altijd 0-Pas de adressen $D200 (LO-output baud rate), $D202 (HI-output baud rate), $D204 (LO-input baud rate"I}), $D206 (HI-input baud rate) volgens de pokey tabel aan. In dit geval:$D200 #$27$D202 #$00$D204 #$27$D206 #$00De so"J}urce listing voor het instellen op 19200 bps (19200BPS.SRC/OBJ):0000 10 .TITLE "Baud rate instellen van 1920"K}0 bps"0000 20 *= $4000 4000 A210 30 LDX #$10 Gebruik kanaal #14002 A903 40 "L} LDA #$03 Open4004 9D4203 50 STA $342,X Zet ICCOM4007 A941 60 LDA #RFILE&$FF LO-"R:"4009 "M}9D4403 70 STA $344,X Zet ICBAL400C A940 80 LDA #RFILE/$100 HI-"R:"400E 9D4503 90 STA $34"N}5,X Zet ICBAH4011 A90D 0100 LDA #$0D Concurrent input en output4013 9D4A03 0110 STA $34A,X Zet"O} AUX14016 A900 0120 LDA #$00 AUX2:=04018 9D4B03 0130 STA $34B,X Zet AUX2401B 2056E4 0140 "P}JSR $E456 Voer OPEN #1,13,0,"R:" uit401E A210 0150 LDX #$10 Gebruik kanaal #14020 A938 0160 LD"Q}A #$38 XIO 40,..4022 9D4203 0170 STA $342,X Zet ICCOM4025 A900 0180 LDA #$00 AUX1:=0 en AUX"R}2:=04027 9D4A03 0190 STA $34A,X Zet AUX1402A 9D4B03 0200 STA $34B,X Zet AUX2402D 2056E4 0210 "S}JSR $E456 Voer XIO 40,#1,0,0,"R:" uit4030 A927 0220 LDA #$27 LO-baud rate4032 8D00D2 0230 STA $"T}D200 Zet AUDF14035 8D04D2 0240 STA $D204 Zet AUDF34038 A900 0250 LDA #$00 HI-baud rate403A "U}8D02D2 0260 STA $D202 Zet AUDF2403D 8D06D2 0270 STA $D206 Zet AUDF44040 60 0280 RTS "V} Keer terug4041 52 0290 RFILE .BYTE "R:",$9B 4042 3A4043 9B4044 0300 .END2771Het instellen va"W}n verschillende baud rates voor zenden en ontvangen.2772Dit gaat hetzelfde als het instellen van 19200 bps met als verschi"X}l dat de pokey adressen ($D200-$D206, AUDF1-4) anders moeten worden aangepast. Voor een baud rate van 1200/75 moeten de adres"Y}sen als volgt aangepast worden:$D200 (LO-output) #$95$D202 (HI-output) #$2E 75 bps$D204 (LO-input) #$E3$D206 (HI-inpu"Z}t) #$02 1200 bps2771Concurrent I/O mode2772Het instellen van concurrent I/O met intern input buffer gaat als beschre"[}ven in de beginners tekst. Het interne input buffer heeft echter een lengte van 32 bytes wat tamelijk klein is, echter bij he"\}t gebruik van machinetaal groot genoeg voor de meeste toepassingen. Het is echter mogelijk om een groter input buffer te defi"]}nieren dit kan alleen in machinetaal (of met een machinetaal routine). Het gaat op dezelfde manier als het instellen met een "^}intern input buffer, alleen moeten nu de buffer adressen van het IOCB en aux1 veranderd worden.aux1 tel op(buffer mode)0 "_} 32 byte buffer op vaste plaats13 Buffer op geheugenplaats door de gebruiker te bepalenaux2 is altijd 0ICBAL/H bepalen de"`} plaats van het input buffer.ICBLL/H bepalen de lengte van het input buffer.Nu volgt een source listing van het instellen v"a}an concurrent I/O met een input buffer op pagina zes met een lengte van 256 bytes. Aangenomen wordt dat het gebruikte kanaal,"b} kanaal #1 is en dat OPEN #1,13,0,"R:" er al aan voorafgegaan is (OWNBUF.SRC/OBJ):0000 10 .TITLE "Eigen inpu"c}t buffer op pagina 6 met lengte 256"0000 20 *= $4000 4000 A210 30 LDX #$10 Gebruik k"d}anaal #14002 A938 40 LDA #$38 XIO 40,..4004 9D4203 50 STA $342,X Zet ICCOM4007 A900 60 "e} LDA #$00 LO-$6004009 9D4403 70 STA $344,X Zet ICBAL400C A906 80 LDA #$06 HI-$600"f}400E 9D4503 90 STA $345,X Zet ICBAH4011 A900 0100 LDA #$00 LO-#bytes4013 9D4803 0110 STA"g} $348,X Zet ICBLL4016 A901 0120 LDA #$01 HI-#bytes4018 9D4903 0130 STA $349,X Zet ICBLH401B "h}A90D 0140 LDA #$0D Eigen input buffer401D 9D4A03 0150 STA $34A,X Zet AUX14020 A900 0160 "i}LDA #$00 AUX2:=04022 9D4B03 0170 STA $34B,X Zet AUX24025 2056E4 0180 JSR $E456 Voer operatie u"j}it4028 60 0190 RTS Keer terug4029 0200 .END277150 interface commando's2772De co"k}mmando's die nu volgen zijn directe seriele commando's. Om er mee te werken moeten de waarden in de adressen $300-$30B gelade"l}n worden en daarna een sprong maken naar $E459. Als er (SIO) achter het commando staat hoeven de volgende adressen niet aange"m}past te worden: $300, $301, $303 en $306. Er moet dan naar $E453 gesprongen worden. Adres $307 hoeft nooit aangepast te worde"n}n. In de tabel wordt dit adres altijd met $00 gevuld. Het zijn dus geen IOCB commando's.$300 01$50 $01302 03 04 05 06 07 "o}08 09 0A 0B Commentaar-----------------------------------------------$21 40 00 05 02 00 55 01 00 00 Laden van deel 2$26 40"p} xx xx 05 00 91 05 00 00 Laden van deel 3$3F 40 xx xx 05 00 0C 00 00 00 Laden van deel 1$41 00 00 00 08 00 00 00 xx xx XIO "q}34,DAUX1/2$42 00 00 00 08 00 00 00 xx xx XIO 36,DAUX1/2$53 40 EA 02 08 00 02 00 00 00 Status (SIO)$57 80 xx xx 08 00 xx xx"r} 00 00 Put (SIO)$58 40 xx xx 08 00 09 00 xx xx XIO 40,DAUX1/2Het put commando in de tabel kan alleen gebruikt worden bui"s}ten de concurrent I/O mode. Binnen de concurrent I/O mode moet de PUT van de IOCB (R: handler) gebruikt worden.De baud rate "t}wordt totaal vanuit de handler bepaald. Het enige wat de 850 met de baud rate doet, is het bepalen van sample snelheid waarme"u}e de inkomende en uitgaande bits moeten worden gesampeled.De vertaling wordt helemaal door de handler geregeld.De uitgaande"v} lijnen DTR, RTS en XMT worden helemaal door de 850 geregeld.De start van concurrent I/O verteld de 850 dat hij kan gaan sam"w}pelen. De baud rate en communicatie worden door de handler geregeld.Het testen van de lijnen DSR, CTS en CRX en de woord gro"x}otte worden door de handler geregeld. De computer ontvangt alleen woorden van 8 bits.Bij de directe I/O tussen computer en 8"y}50 heeft het zin de volgende informatie in DAUX1/2 mee te sturen.commando: DAUX1: DAUX2:$41 XIO 34 Al"z}les (hetzelfde als het XIO commando in BASIC)$42 XIO 36 Woord grootte, stop bits Te testen lijnen$58 XIO 40 Niets, allee"{}n start van concurrent I/O aangeven2771De printer poort2772De printer handler is al in de computer aanwezig en hoeft d"|}us niet ingeladen te worden. De printer kan volledig met de P: handler bestuurd worden of via de SIO (met de normale Put ($50"}}) en Get ($52) operaties). Let op dat de 850 iedere byte met de waarde 155 ($9B) vertaalt naar een 13 ($0D), voor normaal geb"~}ruik met een Epson compatible printer moet er na iedere return ook een line-feed volgen. Dit is op de printer in te stellen m"}et dip-switches. Let daarbij op dat als je een tekening uitprint, dat je geen 155's wegstuurd, want de 850 vertaalt de 155 in"} een 13 en de printer vertaalt de 13 in 13 en 10 ($0A), waardoor de tekening misvormd kan/zal worden.De auteur hoopt hierme"}e een goede (eenvoudige) en overzichtelijke referentie gegeven te hebben van de 850 interface. Deze handleiding is sterk geri"}cht op modemgebruik, maar is ook enigzins bruikbaar met andere apparaten die op de seriele poorten van de 850 zijn aangeslote"}n. De tekst kan het best worden gebruikt met de originele handleiding van de 850 interface. Als er op- of aanmerkingen zijn o"}p de tekst of layout, laat dan aub. een bericht achter op ATARI benelux BBS (tel:03473-77584 tnv. Patrick Holthuizen, subj. 8"}50REFG.TXT) of schrijf naar:Patrick HolthuizenDresdenlaan 45691 GTSonVermeld boven de brief: "subject: 850REFG.TXT". Ver"}meld aub. ook eigen naam en adres, als de opmerkingen of aanvullingen terecht zijn of een goede nuttige aanvulling zijn op de"} huidige tekst, dan ontvangt u de nieuwe tekst vanzelf op het opgegeven adres.Deze tekst is zuiver public domain en de auteu"}r heeft niet de intentie gehad enige copyrights te schenden. De auteur behoudt alle recht zich van eventuele genoemde plichte"}n te onttrekken. Laat deze tekst aub. intact, als u wijzigingen wilt doorvoeren geef eerst een seintje aan de auteur, als dez"}e het eens is met de wijziging krijgt u automatisch de nieuwe versie van de tekst thuisgestuurd. Als de auteur het niet eens "}is met de wijziging, ga dan pas zelf wijzigingen aanbrengen. versie van de tekst thuisgestuurd. Als de auteur het niet eens =@(@8BDEHI JK V`n aanbrengen. versie van de tekst thuisgestuurd. Als de auteur het niet eens $/10 .TITLE "Eigen input buffer op pagina 6 met lengte 256"20 *= $400030 LDX #$10 Gebruik kanaal #140 LDA #$38 XIO 40,..*}50 STA $342,X Zet ICCOM60 LDA #$00 LO-$60070 STA $344,X Zet ICBAL80 LDA #$06 HI-$60090 STA $345,X Zet ICBAH0100 L*}DA #$00 LO-#bytes0110 STA $348,X Zet ICBLL0120 LDA #$01 HI-#bytes0130 STA $349,X Zet ICBLH0140 LDA #$0D Eigen input b*}uffer0150 STA $34A,X Zet AUX10160 LDA #$00 AUX2:=00170 STA $34B,X Zet AUX20180 JSR $E456 Voer operatie uit0190 RTS *}Keer terug0200 .END Zet AUX10160 LDA #$00 AUX2:=00170 STA $34B,X Zet AUX20180 JSR $E456 Voer operatie uit0190 RTS (@[@P?@O@     Y` O@ Y0 l oer operatie uit0190 RTS ,b10 .TITLE "R: lader"20 *= $4000 De inlader van ATARI begint op $3FD30 LDA #$50 R1:40 STA $300 Zet DDEVIC50 LDA #$01 2}Device nr.160 STA $301 Zet DUNIT70 LDA #$3F Laad deel 180 STA $302 Zet DCOMND90 LDA #$40 Receive data0100 STA $303 2}Zet DSTATS0110 LDA #BUF&$FF LO-buffer0120 STA $304 Zet DBUFLO0130 LDA #BUF/$100 HI-buffer0140 STA $305 Zet DBUFHI0152}0 LDA #$05 Time-out van 5 sec.0160 STA $306 Zet DTIMLO0170 LDA #$0C LO-#bytes0180 STA $308 Zet DBYTLO0190 LDA #$00 H2}I-#bytes0200 STA $309 Zet DBYTHI0210 STA $30A Zet DAUX1 (DAUX1:=0)0220 STA $30B Zet DAUX2 (DAUX2:=0)0230 JSR $E459 La2}ad deel 10240 BPL NEXT1 Succesvolle poging-> NEXT10250 END1 RTS Keer terug, handler niet geladen0260 NEXT1 LDX #$0B X:=#$2}0B (counter)0270 LOOP1 LDA BUF,X A:=Laad-info voor deel 20280 STA $300,X Sla info op in device control block0290 DEX X:=2}X-10300 BPL LOOP1 X>=0-> LOOP10310 JSR $E459 Laad deel 20320 BMI END1 Niet-succesvolle poging-> END10330 JSR $506 Spr2}ing naar deel 2 ($506=start-adres)0340 JMP ($0C) Keer terug (naar DOSINI)0350 BUF .BYTE 0,0,0,0,0,0,0,0,0,0,0,0,00360 .E2}ND naar deel 2 ($506=start-adres)0340 JMP ($0C) Keer terug (naar DOSINI)0350 BUF .BYTE 0,0,0,0,0,0,0,0,0,0,0,0,00360 .E0@N@R`P!@  U  Y0 l .BYTE 0,0,0,0,0,0,0,0,0,0,0,0,00360 .E4U10 .TITLE "R: lader 2"20 *= $400030 LDY #$0 Y:=040 LOOP1 LDA $31A,Y A:=HATABS device letter50 CMP #'R A=#'R?60 BNE :}SEARCH R: niet gevonden-> SEARCH70 END1 RTS Keer terug (R: al aanwezig)80 SEARCH INY Y:=Y+190 INY Y:=Y+10100 INY Y:=Y+1:}0110 CPY #$1E Y=#$1E?0120 BNE LOOP1 Einde HATABS niet bereikt-> LOOP10130 LDA #$50 R:0140 STA $300 Zet DDEVIC0150 L:}DA #$01 Device nr.10160 STA $301 Zet DUNIT0170 LDA #$21 Laad deel 20180 STA $302 Zet DCOMND0190 LDA #$40 Receive data:}0200 STA $303 Zet DSTATS0210 LDA #$00 LO-buffer, DAUX1, DAUX20220 STA $304 Zet DBUFLO0230 STA $30A Zet DAUX1 (DAUX1:=:}0)0240 STA $30B Zet DAUX2 (DAUX2:=0)0250 LDA #$05 HI-buffer0260 STA $305 Zet DBUFHI0270 LDA #$02 Time-out van 2 sec.:}0280 STA $306 Zet DTIMLO0290 LDA #$55 LO-#bytes0300 STA $308 Zet DBYTLO0310 LDA #$01 HI-#bytes0320 STA $309 Zet DBYT:}HI0330 JSR $E459 Laad deel 20340 BMI END1 Niet-succesvolle poging-> END10350 JSR $506 Spring naar deel 20360 JMP ($0C:}) Spring naar DOSINI0370 .END340 BMI END1 Niet-succesvolle poging-> END10350 JSR $506 Spring naar deel 20360 JMP ($0C8 De file 850REFG.TXT is geschrevenmet ATARIWRITER en moet daar ookmee uitgeprint worden. Heeft uechter dit programma nietb>}eschikbaar, print dan de file850REFG.ASC uit met behulp van decopy funktie van DOS 2.x. Dit gaatals volgt vanuit het DOSme>}nu:C Dx:850REFG.ASC,P: NB. De file 850REFG.ASC isafgestemd op EPSON printers.Voor mensen die ATARIWRITE>}Rgebruiken, let er op dat deinstellingen op de bovenste regelgoed zijn ingesteld. Het staat inde file als volgt ingesteld>}:80 kolommenpagina lengte 144(!) halve regels (dit is iets langer dan een A4, dus pas op)De tekst is vooral bedoelt vo>}ordiegene die met de 850 interfacewillen programmeren. De auteurstaat altijd open voor op- en/ofaanmerkingen op de tekst.>} Zie vooradres en/of telefoonnummer heteinde van de tekst.uteurstaat altijd open voor op- en/ofaanmerkingen op de tekst.<=